package com.hibase.common.util;

import java.util.Arrays;
import java.util.HashSet;

/**
 * @ClassName: ArrayUtils
 * @Description: TODO
 * @author: TimBrian
 * @date: 2019年11月26日 下午4:55:06
 */
public class ArrayUtils {
	
	/**
	 * 
	 * @Title: ArrayUtils
	 * @Description: 两个数组比较，求交集 
	 * @author TimBrian
	 * @since 2019年11月26日下午4:58:05
	 * @param strOne
	 * @param strTwo
	 * @return
	 * @throws
	 */
	public static Object[] intersection(Object[] strOne, Object[] strTwo) {
		if (isEmpty(strOne) || isEmpty(strTwo)) {
			return new Object[0];
		}
		HashSet<Object> set = new HashSet<>(Arrays.asList(strOne));
		set.retainAll(Arrays.asList(strTwo));
		return set.toArray();
	}

	/**
	 * @Title: ArrayUtils
	 * @Description:  两个数组比较，求差集
	 * @author TimBrian
	 * @since 2019年11月26日下午4:58:11
	 * @param strOne
	 * @param strTwo
	 * @return
	 * @throws
	 */
	public static Object[] differenceSet(Object[] strOne, Object[] strTwo) {
		if (isEmpty(strOne) || isEmpty(strTwo)) {
			return new Object[0];
		}
		HashSet<Object> set = new HashSet<>(Arrays.asList(strOne));
		set.removeAll(new HashSet<>(Arrays.asList(strTwo)));
		return set.toArray();
	}

	/**
	 * @Title: ArrayUtils
	 * @Description: 两个数组比较，求并集（去重）
	 * @author TimBrian
	 * @since 2019年11月26日下午4:58:18
	 * @param strOne
	 * @param strTwo
	 * @return
	 * @throws
	 */
	public static Object[] union(Object[] strOne, Object[] strTwo) {
		if (isEmpty(strOne) && isEmpty(strTwo)) {
			return new Object[0];
		} else if (!isEmpty(strOne) && isEmpty(strTwo)) {
			return strOne;
		} else if (isEmpty(strOne) && !isEmpty(strTwo)) {
			return strTwo;
		}
		HashSet<Object> set = new HashSet<>(Arrays.asList(strOne));
		set.addAll(new HashSet<>(Arrays.asList(strTwo)));
		return set.toArray();
	}
	
	/**
	 * @Title: ArrayUtils
	 * @Description: true为空，false不为空
	 * @author TimBrian
	 * @since 2019年11月26日下午5:00:49
	 * @param obj
	 * @return
	 * @throws
	 */
	public static boolean isEmpty(Object[] obj) {
		if (obj == null || obj.length == 0) {
			return true;
		}
		return false;
	}

}
